#ifndef _STATE_H_
#define _STATE_H_
#include <SECore/Util.h>
#include <SECore/Signal.h>

namespace SEngine
{

    class StateMachine;
    class State : public std::enable_shared_from_this<State>
    {
        friend class StateMachine;
    public:
        State() { uuid = CreateUUID(); }
        virtual void OnEntry() {}
        virtual void OnExit() {}
        virtual void OnState() = 0;
        Signal<> SignalRemoveSelf;    
    private:
        std::string uuid;
    };


    
} // namespace SEngine


#endif